// @Author EthanScriptOn
// @Desc
package operator

import (
	"gitee.com/fatzeng/srf_switch_basic_components/common/identity"
	"gitee.com/fatzeng/srf_switch_stream_bridge/framework/actuator"
)

type MultiChannelDataOperator interface {
	identity.IdentityInformation
	Execute(ctx *actuator.SrfSwitchBridgeActuatorContext, operatorConfigIdentifier interface{}, structureParam interface{}) (interface{}, error)
}

type MultiChannelDataOperatorConfigInterface interface {
	identity.IdentityInformation
	GetOperatorConfigIdentifier(IsNesting bool) interface{}
	GetOperatorIdentifier(IsNesting bool) interface{}
}

type LoopMultiChannelDataOperator interface {
	MultiChannelDataOperator
	GetDataPipeline(operatorIdentifier interface{}) chan<- interface{}
	ExecuteWithLoop(ctx *actuator.SrfSwitchBridgeActuatorContext, operatorConfigIdentifier interface{}, structureParam interface{}) error
}
